package com.ke.rule.base;

/**
 * 确定优先级的模式
 * 
 * @author guyu
 *
 */
public enum PrioritizeMode {
  ASSIGN, FIRST, LAST, BEFORE, AFTER;
  
  /**
   * 是否相对方式(after/before)，区别于绝对模式（assign/first/last）
   * @return
   */
  public boolean isRelative() {
    return AFTER.equals(this) || BEFORE.equals(this);
  }
  
  /**
   * 处理非优先级序号的组件次序时，是否需要逆序后处理？以保证自然序
   * a
   * b before a
   * c before a
   * 那么次序最终次序应当是bca，而不是cba
   * 
   * @return
   */
  public boolean isNeedToReverse() {
    return FIRST.equals(this) || AFTER.equals(this);
  }
}
